/* 
类类型: 实现接口
1. 一个类可以实现多个接口
2. 一个接口可以继承多个接口
*/
(function () {
  // 警报的接口
  interface Alarm {
    alert(): void
  }

  // 灯的接口
  interface Light {
    lightOn (): void
    lightOff (): void
  }

  // 一个接口继承于多个接口
  interface LightableAlarm extends Alarm, Light{
    
  }

  class Car2 implements LightableAlarm {
    alert(): void {
      console.log('car2 alert')
    }

    lightOn (): void {
      console.log('car2 lightOn')
    }
    lightOff (): void {
      console.log('car2 lightOff')
    }
  }

  // 一个类实现多个接口
  class Car implements Alarm, Light {
    alert(): void {
      console.log('car alert')
    }

    lightOn (): void {
      console.log('car lightOn')
    }
    lightOff (): void {
      console.log('car lightOff')
    }
  }

  const c = new Car()  // 类型推断 => 定义变量并赋值, 变量的类型就是值的类型
  c.alert()
  c.lightOff()
  c.lightOn()
})()